package proyecto.web;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import proyecto.excepcion.DAOExcepcion;
import proyecto.modelo.Analisis;
import proyecto.modelo.Paciente;
import proyecto.modelo.Ficha;
import proyecto.modelo.Ficha_Medica;
import proyecto.modelo.Muestra;
import proyecto.service.AnalisisService;
import proyecto.service.FichaService;
import proyecto.service.MuestraService;
import proyecto.service.PacienteService;

public class FichasController extends MultiActionController {

    private FichaService fichaService;
    private MuestraService muestraService;
    private AnalisisService analisisService;
    private PacienteService pacienteService;

    public PacienteService getPacienteService() {
        return pacienteService;
    }

    public void setPacienteService(PacienteService pacienteService) {
        this.pacienteService = pacienteService;
    }

    public FichaService getFichaService() {
        return fichaService;
    }

    public void setFichaService(FichaService fichaService) {
        this.fichaService = fichaService;
    }

    public MuestraService getMuestraService() {
        return muestraService;
    }


    public void setMuestraService(MuestraService muestraService) {
        this.muestraService = muestraService;
    }


    public AnalisisService getAnalisisService() {
        return analisisService;
    }


    public void setAnalisisService(AnalisisService analisisService) {
        this.analisisService = analisisService;
    }

    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws DAOExcepcion {
        //request.setAttribute("usuarios", usuarioDAO.listar());
        //request.setAttribute("fichas", fichaDao.listar());
        //return new ModelAndView("ficha_medica");
        Collection<Ficha_Medica> ficha = fichaService.listar();
        Collection<Analisis> analisis = analisisService.listar();
        Collection<Muestra> muestra = muestraService.listar();
        Collection<Paciente> paciente = pacienteService.listarPacientes();

        System.out.println(ficha);
        System.out.println("Esto es de analisis");
        System.out.println(analisis);
        System.out.println(muestra);
        ModelAndView mv = new ModelAndView("ficha_medica");
        mv.addObject("fichas", ficha);
        mv.addObject("analisis", analisis);
        mv.addObject("muestra", muestra);
        mv.addObject("paciente", paciente);
        return mv;
    }

    public ModelAndView buscarFichasPorIdPaciente(HttpServletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession();
        Paciente paciente_actual = (Paciente)(session.getAttribute("PACIENTE_ACTUAL"));
        try {
            Collection<Ficha> fichas = fichaService.buscarFichasPorIdPaciente(paciente_actual.getId_paciente());
            System.out.println(fichas);
            request.setAttribute("roles", fichas);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/intranet_pacientes/listar_fichas_medicas");
    }

    public ModelAndView buscarFichasPorIdPacienteLabo(HttpServletRequest request, HttpServletResponse response) {
        //HttpSession session = request.getSession();
        //Paciente paciente_actual = (Paciente)(session.getAttribute("PACIENTE_ACTUAL"));
        int idPaciente = Integer.parseInt(request.getParameter("idPaciente"));
        String nombrePaciente = request.getParameter("nombrePaciente");
        String apellidoPaciente = request.getParameter("apellidoPaciente");

        try {
            Collection<Ficha> fichas = fichaService.buscarFichasPorIdPaciente(idPaciente);
            System.out.println(fichas);
            request.setAttribute("fichas", fichas);
            request.setAttribute("nombrePaciente", nombrePaciente);
            request.setAttribute("apellidoPaciente", apellidoPaciente);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/intranet_laboratoristas/listar_fichaxpaciente");
    }

    public ModelAndView insertar(HttpServletRequest request, HttpServletResponse response) throws DAOExcepcion, ParseException{
        
        Ficha_Medica vo=new Ficha_Medica();
        System.out.println("TESTttttttttttttt : " + request.getParameter("Paciente"));
        vo.setPaciente(request.getParameter("Paciente"));
        vo.setDes_analisis(request.getParameter("Analisis"));
        String[] idanalisis=request.getParameterValues("Analisis");
        for(int i=0; i<idanalisis.length; i++){
            vo.setId_analisis(Integer.parseInt(idanalisis[i]));
        }
        vo.setDes_muestra(request.getParameter("Muestra"));
        String[] idmuestra=request.getParameterValues("Muestra");
        for(int i=0; i<idmuestra.length; i++){
            vo.setId_muestra(Integer.parseInt(idmuestra[i]));
        }
        vo.setObservacion(request.getParameter("Observ"));

        try {
            fichaService.insertar(vo);
        } catch (DAOExcepcion e) {
            System.err.println(e.toString());
        }

        Collection<Ficha_Medica> ficha = fichaService.listar();
        Collection<Analisis> analisis = analisisService.listar();
        Collection<Muestra> muestra = muestraService.listar();
        Collection<Paciente> paciente = pacienteService.listarPacientes();
            
        ModelAndView mv = new ModelAndView("ficha_medica");
        mv.addObject("fichas", ficha);
        mv.addObject("analisis", analisis);
        mv.addObject("muestra", muestra);
        mv.addObject("paciente", paciente);
        return mv;
    }



    public ModelAndView eliminar(HttpServletRequest request, HttpServletResponse response) throws DAOExcepcion {
        String idficha = request.getParameter("idficha");
        try {
            fichaService.eliminar(Integer.parseInt(idficha));
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }

        Collection<Ficha_Medica> ficha = fichaService.listar();
        Collection<Analisis> analisis = analisisService.listar();
        Collection<Muestra> muestra = muestraService.listar();
            //return new ModelAndView("ficha_medica");
        ModelAndView mv = new ModelAndView("ficha_medica");
        mv.addObject("fichas", ficha);
        mv.addObject("analisis", analisis);
        mv.addObject("muestra", muestra);
        return mv;
    }
}